home *** CD-ROM | disk | FTP | other *** search
open in:
MacOS 8.1
|
Win98
|
DOS
browse contents |
view JSON data
|
view as text
This file was processed as: Mailbox/MIME Entity
(archive/mbox).
Confidence | Program | Detection | Match Type | Support
|
---|
100%
| dexvert
| Newsgroup Content (archive/news)
| magic
| Supported |
100%
| dexvert
| Mailbox/MIME Entity (archive/mbox)
| magic
| Supported |
1%
| dexvert
| Text File (text/txt)
| fallback
| Supported |
100%
| file
| news text
| default
| |
99%
| file
| C++ source text
| default
| |
98%
| file
| C source text
| default
| |
97%
| file
| C source, ASCII text
| default
| |
100%
| checkBytes
| Printable ASCII
| default
| |
100%
| dexmagic
| PrintFox/Pagefox WEAK
| default
| |
100%
| perlTextCheck
| Likely Text (Perl)
| default
| |
100%
| siegfried
| fmt/950 MIME Email (1.0)
| default
| |
100%
| detectItEasy
| Format: plain text[LF]
| default (weak)
| |
100%
| xdgMime
| message/news
| default
|
|
hex view+--------+-------------------------+-------------------------+--------+--------+
|00000000| 50 61 74 68 3a 20 74 72 | 61 6e 73 2e 78 73 34 61 |Path: tr|ans.xs4a|
|00000010| 6c 6c 2e 6e 6c 21 72 6f | 65 6c 6f 66 0a 46 72 6f |ll.nl!ro|elof.Fro|
|00000020| 6d 3a 20 72 6f 65 6c 6f | 66 40 74 72 61 6e 73 2e |m: roelo|f@trans.|
|00000030| 78 73 34 61 6c 6c 2e 6e | 6c 20 28 52 6f 65 6c 6f |xs4all.n|l (Roelo|
|00000040| 66 20 4a 61 6e 73 65 6e | 29 0a 4d 65 73 73 61 67 |f Jansen|).Messag|
|00000050| 65 2d 49 44 3a 20 3c 33 | 31 33 37 34 63 34 38 40 |e-ID: <3|1374c48@|
|00000060| 74 72 61 6e 73 2e 78 73 | 34 61 6c 6c 2e 6e 6c 3e |trans.xs|4all.nl>|
|00000070| 0a 4e 65 77 73 67 72 6f | 75 70 73 3a 20 63 6f 6d |.Newsgro|ups: com|
|00000080| 70 2e 6c 61 6e 67 2e 63 | 2b 2b 0a 58 2d 46 54 4e |p.lang.c|++.X-FTN|
|00000090| 2d 54 6f 3a 20 42 72 79 | 61 6e 20 4d 75 72 70 68 |-To: Bry|an Murph|
|000000a0| 79 0a 53 75 62 6a 65 63 | 74 3a 20 52 65 3a 20 43 |y.Subjec|t: Re: C|
|000000b0| 2b 2b 20 4f 4f 20 71 75 | 65 73 74 69 6f 6e 20 28 |++ OO qu|estion (|
|000000c0| 6c 6f 6e 67 29 0a 44 61 | 74 65 3a 20 30 31 20 4d |long).Da|te: 01 M|
|000000d0| 61 72 20 39 36 20 31 33 | 3a 31 33 3a 31 32 20 2b |ar 96 13|:13:12 +|
|000000e0| 30 31 30 30 0a 4d 49 4d | 45 2d 56 65 72 73 69 6f |0100.MIM|E-Versio|
|000000f0| 6e 3a 20 31 2e 30 0a 43 | 6f 6e 74 65 6e 74 2d 54 |n: 1.0.C|ontent-T|
|00000100| 79 70 65 3a 20 74 65 78 | 74 2f 70 6c 61 69 6e 3b |ype: tex|t/plain;|
|00000110| 20 63 68 61 72 73 65 74 | 3d 69 73 6f 2d 38 38 35 | charset|=iso-885|
|00000120| 39 2d 31 0a 43 6f 6e 74 | 65 6e 74 2d 54 72 61 6e |9-1.Cont|ent-Tran|
|00000130| 73 66 65 72 2d 45 6e 63 | 6f 64 69 6e 67 3a 20 38 |sfer-Enc|oding: 8|
|00000140| 62 69 74 0a 4f 72 67 61 | 6e 69 7a 61 74 69 6f 6e |bit.Orga|nization|
|00000150| 3a 20 54 72 61 6e 73 66 | 65 72 20 42 42 53 20 52 |: Transf|er BBS R|
|00000160| 6f 74 74 65 72 64 61 6d | 20 3c 2b 33 31 2d 31 30 |otterdam| <+31-10|
|00000170| 34 38 34 32 30 36 35 3e | 0a 58 2d 47 61 74 65 53 |4842065>|.X-GateS|
|00000180| 6f 66 74 77 61 72 65 3a | 20 41 6d 69 47 61 74 65 |oftware:| AmiGate|
|00000190| 20 31 2e 35 20 28 31 31 | 2e 38 2e 39 35 29 0a 0a | 1.5 (11|.8.95)..|
|000001a0| 49 6e 20 61 20 6d 65 73 | 73 61 67 65 20 6f 66 20 |In a mes|sage of |
|000001b0| 32 38 20 46 65 62 20 39 | 36 20 42 72 79 61 6e 20 |28 Feb 9|6 Bryan |
|000001c0| 4d 75 72 70 68 79 20 77 | 72 6f 74 65 20 74 6f 20 |Murphy w|rote to |
|000001d0| 41 6c 6c 3a 0a 0a 20 42 | 4d 3e 20 46 72 6f 6d 3a |All:.. B|M> From:|
|000001e0| 20 62 66 34 36 31 40 63 | 6c 65 76 65 6c 61 6e 64 | bf461@c|leveland|
|000001f0| 2e 46 72 65 65 6e 65 74 | 2e 45 64 75 20 28 42 72 |.Freenet|.Edu (Br|
|00000200| 79 61 6e 20 4d 75 72 70 | 68 79 29 0a 0a 0a 0a 20 |yan Murp|hy).... |
|00000210| 42 4d 3e 20 2f 2a 0a 20 | 42 4d 3e 20 57 61 72 6e |BM> /*. |BM> Warn|
|00000220| 69 6e 67 3a 20 20 54 68 | 69 73 20 69 73 20 61 20 |ing: Th|is is a |
|00000230| 6c 6f 6e 67 20 6f 6e 65 | 2e 20 0a 0a 20 42 4d 3e |long one|. .. BM>|
|00000240| 20 54 68 65 20 66 69 72 | 73 74 20 70 72 6f 62 6c | The fir|st probl|
|00000250| 65 6d 20 69 6e 76 6f 6c | 76 65 73 20 74 68 69 73 |em invol|ves this|
|00000260| 20 76 65 72 79 20 70 65 | 63 75 6c 69 61 72 20 69 | very pe|culiar i|
|00000270| 6e 63 6f 6e 73 69 73 74 | 65 6e 63 79 20 74 68 61 |nconsist|ency tha|
|00000280| 74 20 49 20 63 61 6e 27 | 74 0a 20 42 4d 3e 20 65 |t I can'|t. BM> e|
|00000290| 78 70 6c 61 69 6e 2c 20 | 66 6f 72 20 69 6e 73 74 |xplain, |for inst|
|000002a0| 61 6e 63 65 2c 20 74 68 | 69 73 20 77 6f 72 6b 73 |ance, th|is works|
|000002b0| 3a 0a 0a 20 42 4d 3e 20 | 20 20 20 20 4d 61 74 72 |:.. BM> | Matr|
|000002c0| 69 78 20 4d 33 20 3d 20 | 4d 61 74 72 69 78 31 20 |ix M3 = |Matrix1 |
|000002d0| 2a 20 4d 61 74 72 69 78 | 32 3b 0a 0a 20 42 4d 3e |* Matrix|2;.. BM>|
|000002e0| 20 77 68 65 72 65 61 73 | 20 64 65 66 69 6e 69 6e | whereas| definin|
|000002f0| 67 20 4d 61 74 72 69 78 | 20 4d 33 20 61 68 65 61 |g Matrix| M3 ahea|
|00000300| 64 20 6f 66 20 74 69 6d | 65 0a 0a 20 42 4d 3e 20 |d of tim|e.. BM> |
|00000310| 20 20 20 20 4d 33 20 3d | 20 4d 61 74 72 69 78 31 | M3 =| Matrix1|
|00000320| 20 2a 20 4d 61 74 72 69 | 78 32 3b 0a 0a 20 42 4d | * Matri|x2;.. BM|
|00000330| 3e 20 63 72 61 73 68 65 | 73 20 6f 75 74 20 6f 6e |> crashe|s out on|
|00000340| 20 6d 65 20 67 69 76 69 | 6e 67 20 6d 65 20 61 6e | me givi|ng me an|
|00000350| 20 65 72 72 6f 72 2e 20 | 20 49 20 63 61 6e 27 74 | error. | I can't|
|00000360| 20 72 65 61 6c 6c 79 20 | 74 65 6c 6c 20 77 68 79 | really |tell why|
|00000370| 2e 20 49 74 27 73 20 61 | 0a 20 42 4d 3e 20 6d 65 |. It's a|. BM> me|
|00000380| 6d 6f 72 79 20 61 6c 6c | 6f 63 61 74 69 6f 6e 20 |mory all|ocation |
|00000390| 61 73 73 65 72 74 69 6f | 6e 20 65 72 72 6f 72 2e |assertio|n error.|
|000003a0| 20 20 49 20 63 61 6e 27 | 74 20 66 69 67 75 72 65 | I can'|t figure|
|000003b0| 20 6f 75 74 20 77 68 79 | 20 49 20 63 61 6e 27 74 | out why| I can't|
|000003c0| 20 64 6f 0a 20 42 4d 3e | 20 74 68 65 20 73 65 63 | do. BM>| the sec|
|000003d0| 6f 6e 64 20 6d 65 74 68 | 6f 64 2e 20 20 49 20 77 |ond meth|od. I w|
|000003e0| 61 73 20 74 68 69 6e 6b | 69 6e 67 20 61 62 6f 75 |as think|ing abou|
|000003f0| 74 20 74 68 69 73 2c 20 | 20 61 6e 64 20 49 20 68 |t this, | and I h|
|00000400| 61 76 65 20 61 6e 6f 74 | 68 65 72 0a 20 42 4d 3e |ave anot|her. BM>|
|00000410| 20 71 75 65 73 74 69 6f | 6e 20 72 65 6c 61 74 65 | questio|n relate|
|00000420| 64 20 74 6f 20 74 68 69 | 73 2e 20 20 57 68 65 6e |d to thi|s. When|
|00000430| 20 49 20 64 65 66 69 6e | 65 20 74 68 65 20 4d 61 | I defin|e the Ma|
|00000440| 74 72 69 78 20 4d 33 20 | 61 6e 64 20 61 73 73 69 |trix M3 |and assi|
|00000450| 67 6e 20 69 74 0a 20 42 | 4d 3e 20 72 69 67 68 74 |gn it. B|M> right|
|00000460| 20 61 77 61 79 2c 20 69 | 73 20 74 68 65 20 44 65 | away, i|s the De|
|00000470| 66 61 75 6c 74 20 42 6c | 61 6e 6b 20 43 6f 6e 73 |fault Bl|ank Cons|
|00000480| 74 72 75 63 74 6f 72 20 | 63 61 6c 6c 65 64 2c 20 |tructor |called, |
|00000490| 54 48 45 4e 20 74 68 65 | 20 43 6f 70 79 0a 20 42 |THEN the| Copy. B|
|000004a0| 4d 3e 20 43 6f 6e 73 74 | 72 75 63 74 6f 72 3f 20 |M> Const|ructor? |
|000004b0| 20 4f 72 20 6a 75 73 74 | 20 74 68 65 20 63 6f 70 | Or just| the cop|
|000004c0| 79 20 63 6f 6e 73 74 72 | 75 63 74 6f 72 3f 20 20 |y constr|uctor? |
|000004d0| 41 6c 73 6f 2c 20 73 61 | 79 20 74 68 65 20 63 6f |Also, sa|y the co|
|000004e0| 70 79 0a 20 42 4d 3e 20 | 43 6f 6e 73 74 72 75 63 |py. BM> |Construc|
|000004f0| 74 6f 72 20 77 61 73 20 | 63 61 6c 6c 65 64 2e 20 |tor was |called. |
|00000500| 57 68 65 6e 20 74 68 65 | 20 6e 65 77 20 64 61 74 |When the| new dat|
|00000510| 61 20 69 73 20 63 6f 70 | 69 65 64 20 6f 76 65 72 |a is cop|ied over|
|00000520| 2c 20 69 73 20 74 68 65 | 0a 20 42 4d 3e 20 44 65 |, is the|. BM> De|
|00000530| 73 74 72 75 63 74 6f 72 | 20 63 61 6c 6c 65 64 20 |structor| called |
|00000540| 20 62 65 66 6f 72 65 20 | 74 68 65 20 63 6f 70 79 | before |the copy|
|00000550| 20 63 6f 6e 73 74 72 75 | 63 74 6f 72 20 69 73 20 | constru|ctor is |
|00000560| 75 73 65 64 20 74 6f 20 | 63 6f 70 79 20 74 68 65 |used to |copy the|
|00000570| 20 6e 65 77 0a 20 42 4d | 3e 20 64 61 74 61 20 6f | new. BM|> data o|
|00000580| 76 65 72 3f 20 49 20 74 | 68 69 6e 6b 20 74 68 65 |ver? I t|hink the|
|00000590| 73 65 20 71 75 65 73 74 | 69 6f 6e 73 20 63 6f 75 |se quest|ions cou|
|000005a0| 6c 64 20 64 65 66 69 6e | 61 74 65 6c 79 20 73 68 |ld defin|ately sh|
|000005b0| 65 64 20 73 6f 6d 65 20 | 6c 69 67 68 74 20 61 73 |ed some |light as|
|000005c0| 0a 20 42 4d 3e 20 74 6f | 20 74 68 65 20 69 6e 63 |. BM> to| the inc|
|000005d0| 6f 6e 73 69 73 74 65 6e | 63 79 20 6e 6f 74 65 64 |onsisten|cy noted|
|000005e0| 20 61 62 6f 76 65 2e 0a | 0a 54 68 69 73 20 69 73 | above..|.This is|
|000005f0| 20 69 6e 64 65 65 64 20 | 61 20 70 72 65 63 69 7a | indeed |a preciz|
|00000600| 65 20 64 69 66 66 65 72 | 65 6e 63 65 20 69 6e 20 |e differ|ence in |
|00000610| 43 2b 2b 3b 20 79 6f 75 | 20 68 61 76 65 20 74 77 |C++; you| have tw|
|00000620| 6f 20 6d 65 74 68 6f 64 | 73 20 6f 66 0a 61 73 73 |o method|s of.ass|
|00000630| 69 67 6e 69 6e 67 20 61 | 20 76 61 6c 75 65 20 74 |igning a| value t|
|00000640| 6f 20 61 6e 20 6f 62 6a | 65 63 74 3a 20 69 6e 69 |o an obj|ect: ini|
|00000650| 74 69 61 6c 69 73 61 74 | 69 6f 6e 20 61 6e 64 20 |tialisat|ion and |
|00000660| 61 73 73 69 67 6e 6d 65 | 6e 74 2e 0a 0a 57 69 74 |assignme|nt...Wit|
|00000670| 68 20 20 69 6e 69 74 69 | 61 6c 69 73 61 74 69 6f |h initi|alisatio|
|00000680| 6e 2c 20 20 79 6f 75 20 | 20 61 6c 6c 6f 63 61 74 |n, you | allocat|
|00000690| 65 20 6d 65 6d 6f 72 79 | 20 2a 61 6e 64 2a 20 63 |e memory| *and* c|
|000006a0| 6f 70 79 20 74 68 65 20 | 63 6f 6e 74 65 6e 74 73 |opy the |contents|
|000006b0| 20 6f 66 0a 74 68 65 20 | 74 65 6d 70 6f 72 61 72 | of.the |temporar|
|000006c0| 79 20 6f 62 6a 65 63 74 | 20 28 72 65 73 75 6c 74 |y object| (result|
|000006d0| 20 66 72 6f 6d 20 4d 61 | 74 72 69 78 31 20 2a 20 | from Ma|trix1 * |
|000006e0| 4d 61 74 72 69 78 32 29 | 2e 20 57 69 74 68 20 61 |Matrix2)|. With a|
|000006f0| 73 73 69 67 6e 6d 65 6e | 74 2c 0a 79 6f 75 20 6f |ssignmen|t,.you o|
|00000700| 6e 6c 79 20 28 64 65 29 | 61 6c 6c 6f 63 61 74 65 |nly (de)|allocate|
|00000710| 20 6d 65 6d 6f 72 79 20 | 69 66 20 74 68 65 20 64 | memory |if the d|
|00000720| 69 6d 65 6e 73 69 6f 6e | 73 20 6f 66 20 74 68 65 |imension|s of the|
|00000730| 20 6d 61 74 72 69 78 20 | 74 6f 20 63 6f 70 79 0a | matrix |to copy.|
|00000740| 66 72 6f 6d 20 61 72 65 | 20 64 69 66 66 65 72 65 |from are| differe|
|00000750| 6e 74 20 6f 72 20 74 68 | 65 20 6d 61 74 72 69 78 |nt or th|e matrix|
|00000760| 20 69 73 20 6e 6f 74 20 | 69 6e 69 74 69 61 6c 69 | is not |initiali|
|00000770| 73 65 64 20 61 74 20 61 | 6c 6c 2e 0a 0a 42 75 74 |sed at a|ll...But|
|00000780| 20 74 6f 20 63 75 74 20 | 74 68 69 6e 67 73 20 73 | to cut |things s|
|00000790| 68 6f 72 74 2c 20 49 20 | 68 61 64 20 74 6f 20 70 |hort, I |had to p|
|000007a0| 72 6f 67 72 61 6d 20 61 | 20 4d 61 74 72 69 78 20 |rogram a| Matrix |
|000007b0| 63 6c 61 73 73 20 69 6e | 20 43 2b 2b 20 61 6c 73 |class in| C++ als|
|000007c0| 6f 0a 61 6e 64 20 68 65 | 72 65 20 49 20 68 61 76 |o.and he|re I hav|
|000007d0| 65 20 73 6f 6d 65 20 73 | 6f 75 72 63 65 20 77 68 |e some s|ource wh|
|000007e0| 69 63 68 20 63 61 6e 20 | 68 65 6c 70 20 79 6f 75 |ich can |help you|
|000007f0| 20 6f 75 74 3a 0a 0a 63 | 6c 61 73 73 20 4d 61 74 | out:..c|lass Mat|
|00000800| 72 69 78 20 7b 0a 09 69 | 6e 74 20 72 6f 77 73 3b |rix {..i|nt rows;|
|00000810| 20 2f 2f 20 64 69 6d 65 | 6e 73 69 6f 6e 73 0a 09 | // dime|nsions..|
|00000820| 69 6e 74 20 63 6f 6c 73 | 3b 0a 09 76 6f 69 64 20 |int cols|;..void |
|00000830| 49 6e 69 74 28 29 3b 0a | 09 76 6f 69 64 20 41 73 |Init();.|.void As|
|00000840| 73 69 67 6e 28 63 6f 6e | 73 74 20 4d 61 74 72 69 |sign(con|st Matri|
|00000850| 78 20 26 41 29 3b 0a 09 | 76 6f 69 64 20 44 65 6c |x &A);..|void Del|
|00000860| 65 74 65 28 29 3b 0a 0a | 70 75 62 6c 69 63 3a 0a |ete();..|public:.|
|00000870| 09 64 6f 75 62 6c 65 20 | 2a 2a 6d 61 74 72 69 78 |.double |**matrix|
|00000880| 3b 20 2f 2f 20 6d 61 74 | 72 69 78 20 65 6c 65 6d |; // mat|rix elem|
|00000890| 65 6e 74 65 6e 0a 0a 09 | 4d 61 74 72 69 78 28 29 |enten...|Matrix()|
|000008a0| 3b 20 2f 2f 20 63 6f 6e | 73 74 72 75 63 74 6f 72 |; // con|structor|
|000008b0| 3b 20 63 72 65 61 74 65 | 20 65 6d 70 74 79 20 6f |; create| empty o|
|000008c0| 62 6a 65 63 74 73 0a 09 | 4d 61 74 72 69 78 28 69 |bjects..|Matrix(i|
|000008d0| 6e 74 20 72 2c 20 69 6e | 74 20 63 29 3b 20 2f 2f |nt r, in|t c); //|
|000008e0| 20 63 6f 6e 73 74 72 75 | 63 74 6f 72 3b 20 63 72 | constru|ctor; cr|
|000008f0| 65 61 74 65 20 6f 62 6a | 65 63 74 73 0a 09 4d 61 |eate obj|ects..Ma|
|00000900| 74 72 69 78 28 63 6f 6e | 73 74 20 4d 61 74 72 69 |trix(con|st Matri|
|00000910| 78 20 26 66 72 6f 6d 29 | 3b 20 2f 2f 20 63 6f 70 |x &from)|; // cop|
|00000920| 79 20 63 6f 6e 73 74 72 | 75 63 74 6f 72 3b 20 69 |y constr|uctor; i|
|00000930| 6e 69 74 69 61 6c 69 7a | 61 74 69 6f 6e 0a 09 7e |nitializ|ation..~|
|00000940| 4d 61 74 72 69 78 28 29 | 3b 20 2f 2f 20 64 65 73 |Matrix()|; // des|
|00000950| 74 72 75 63 74 6f 72 0a | 09 69 6e 74 20 52 6f 77 |tructor.|.int Row|
|00000960| 73 28 29 20 63 6f 6e 73 | 74 20 7b 20 72 65 74 75 |s() cons|t { retu|
|00000970| 72 6e 20 72 6f 77 73 3b | 20 7d 0a 09 69 6e 74 20 |rn rows;| }..int |
|00000980| 43 6f 6c 73 28 29 20 63 | 6f 6e 73 74 20 7b 20 72 |Cols() c|onst { r|
|00000990| 65 74 75 72 6e 20 63 6f | 6c 73 3b 20 7d 0a 0a 09 |eturn co|ls; }...|
|000009a0| 2f 2f 20 43 6f 70 79 20 | 63 6f 6e 74 65 6e 74 73 |// Copy |contents|
|000009b0| 20 6f 66 20 27 66 72 6f | 6d 27 20 74 6f 20 6e 65 | of 'fro|m' to ne|
|000009c0| 77 20 6f 62 6a 65 63 74 | 0a 09 76 6f 69 64 20 6f |w object|..void o|
|000009d0| 70 65 72 61 74 6f 72 3d | 28 63 6f 6e 73 74 20 4d |perator=|(const M|
|000009e0| 61 74 72 69 78 20 26 66 | 72 6f 6d 29 3b 20 2f 2f |atrix &f|rom); //|
|000009f0| 20 61 73 73 69 67 6e 6d | 65 6e 74 0a 0a 09 2f 2f | assignm|ent...//|
|00000a00| 20 55 6e 61 72 79 20 27 | 2d 27 3b 20 63 6f 6d 70 | Unary '|-'; comp|
|00000a10| 6c 65 6d 65 6e 74 20 6f | 66 20 41 20 28 69 2e 65 |lement o|f A (i.e|
|00000a20| 2e 3a 20 2d 41 29 0a 09 | 66 72 69 65 6e 64 20 4d |.: -A)..|friend M|
|00000a30| 61 74 72 69 78 20 6f 70 | 65 72 61 74 6f 72 2d 28 |atrix op|erator-(|
|00000a40| 63 6f 6e 73 74 20 4d 61 | 74 72 69 78 20 26 41 29 |const Ma|trix &A)|
|00000a50| 3b 0a 0a 09 2f 2f 20 42 | 69 6e 61 72 79 20 27 2d |;...// B|inary '-|
|00000a60| 27 3b 20 73 75 62 73 74 | 72 61 63 74 20 41 20 77 |'; subst|ract A w|
|00000a70| 69 74 68 20 42 0a 09 66 | 72 69 65 6e 64 20 4d 61 |ith B..f|riend Ma|
|00000a80| 74 72 69 78 20 6f 70 65 | 72 61 74 6f 72 2d 28 63 |trix ope|rator-(c|
|00000a90| 6f 6e 73 74 20 4d 61 74 | 72 69 78 20 26 41 2c 20 |onst Mat|rix &A, |
|00000aa0| 63 6f 6e 73 74 20 4d 61 | 74 72 69 78 20 26 42 29 |const Ma|trix &B)|
|00000ab0| 3b 0a 0a 09 2f 2f 20 41 | 64 64 20 41 20 74 6f 20 |;...// A|dd A to |
|00000ac0| 42 0a 09 66 72 69 65 6e | 64 20 4d 61 74 72 69 78 |B..frien|d Matrix|
|00000ad0| 20 6f 70 65 72 61 74 6f | 72 2b 28 63 6f 6e 73 74 | operato|r+(const|
|00000ae0| 20 4d 61 74 72 69 78 20 | 26 41 2c 20 63 6f 6e 73 | Matrix |&A, cons|
|00000af0| 74 20 4d 61 74 72 69 78 | 20 26 42 29 3b 0a 0a 09 |t Matrix| &B);...|
|00000b00| 2f 2f 20 64 69 76 69 64 | 65 20 41 20 62 79 20 42 |// divid|e A by B|
|00000b10| 20 28 41 2f 42 20 3d 3d | 20 41 2a 42 5e 2d 31 29 | (A/B ==| A*B^-1)|
|00000b20| 0a 09 66 72 69 65 6e 64 | 20 4d 61 74 72 69 78 20 |..friend| Matrix |
|00000b30| 6f 70 65 72 61 74 6f 72 | 2f 28 63 6f 6e 73 74 20 |operator|/(const |
|00000b40| 4d 61 74 72 69 78 20 26 | 41 2c 20 63 6f 6e 73 74 |Matrix &|A, const|
|00000b50| 20 4d 61 74 72 69 78 20 | 26 42 29 3b 0a 09 66 72 | Matrix |&B);..fr|
|00000b60| 69 65 6e 64 20 4d 61 74 | 72 69 78 20 6f 70 65 72 |iend Mat|rix oper|
|00000b70| 61 74 6f 72 2f 28 63 6f | 6e 73 74 20 4d 61 74 72 |ator/(co|nst Matr|
|00000b80| 69 78 20 26 41 2c 20 63 | 6f 6e 73 74 20 64 6f 75 |ix &A, c|onst dou|
|00000b90| 62 6c 65 20 6e 29 3b 0a | 09 66 72 69 65 6e 64 20 |ble n);.|.friend |
|00000ba0| 4d 61 74 72 69 78 20 6f | 70 65 72 61 74 6f 72 2f |Matrix o|perator/|
|00000bb0| 28 63 6f 6e 73 74 20 64 | 6f 75 62 6c 65 20 6e 2c |(const d|ouble n,|
|00000bc0| 20 63 6f 6e 73 74 20 4d | 61 74 72 69 78 20 26 41 | const M|atrix &A|
|00000bd0| 29 3b 0a 0a 09 2f 2f 20 | 6d 75 6c 74 69 70 6c 79 |);...// |multiply|
|00000be0| 20 42 20 77 69 74 68 20 | 41 0a 09 66 72 69 65 6e | B with |A..frien|
|00000bf0| 64 20 4d 61 74 72 69 78 | 20 6f 70 65 72 61 74 6f |d Matrix| operato|
|00000c00| 72 2a 28 63 6f 6e 73 74 | 20 4d 61 74 72 69 78 20 |r*(const| Matrix |
|00000c10| 26 41 2c 20 63 6f 6e 73 | 74 20 4d 61 74 72 69 78 |&A, cons|t Matrix|
|00000c20| 20 26 42 29 3b 0a 09 66 | 72 69 65 6e 64 20 4d 61 | &B);..f|riend Ma|
|00000c30| 74 72 69 78 20 6f 70 65 | 72 61 74 6f 72 2a 28 63 |trix ope|rator*(c|
|00000c40| 6f 6e 73 74 20 64 6f 75 | 62 6c 65 20 6e 2c 20 63 |onst dou|ble n, c|
|00000c50| 6f 6e 73 74 20 4d 61 74 | 72 69 78 20 26 41 29 3b |onst Mat|rix &A);|
|00000c60| 0a 09 66 72 69 65 6e 64 | 20 4d 61 74 72 69 78 20 |..friend| Matrix |
|00000c70| 6f 70 65 72 61 74 6f 72 | 2a 28 63 6f 6e 73 74 20 |operator|*(const |
|00000c80| 4d 61 74 72 69 78 20 26 | 41 2c 20 63 6f 6e 73 74 |Matrix &|A, const|
|00000c90| 20 64 6f 75 62 6c 65 20 | 6e 29 3b 0a 7d 3b 0a 0a | double |n);.};..|
|00000ca0| 2f 2f 20 64 65 66 61 75 | 6c 74 20 63 6f 6e 73 74 |// defau|lt const|
|00000cb0| 72 75 63 74 6f 72 0a 2f | 2f 20 45 78 61 6d 70 6c |ructor./|/ Exampl|
|00000cc0| 65 3a 20 4d 61 74 72 69 | 78 20 41 3b 0a 4d 61 74 |e: Matri|x A;.Mat|
|00000cd0| 72 69 78 3a 3a 4d 61 74 | 72 69 78 28 29 0a 7b 0a |rix::Mat|rix().{.|
|00000ce0| 09 72 6f 77 73 20 3d 20 | 63 6f 6c 73 20 3d 20 30 |.rows = |cols = 0|
|00000cf0| 3b 20 6d 61 74 72 69 78 | 20 3d 20 4e 55 4c 4c 3b |; matrix| = NULL;|
|00000d00| 0a 7d 0a 0a 2f 2f 20 63 | 6f 6e 73 74 72 75 63 74 |.}..// c|onstruct|
|00000d10| 6f 72 20 77 69 74 68 20 | 64 69 6d 65 6e 73 69 6f |or with |dimensio|
|00000d20| 6e 73 0a 2f 2f 20 45 78 | 61 6d 70 6c 65 3a 20 4d |ns.// Ex|ample: M|
|00000d30| 61 74 72 69 78 20 41 28 | 32 2c 33 29 3b 20 61 6c |atrix A(|2,3); al|
|00000d40| 6c 6f 63 20 32 20 78 20 | 33 20 6d 61 74 72 69 78 |loc 2 x |3 matrix|
|00000d50| 0a 4d 61 74 72 69 78 3a | 3a 4d 61 74 72 69 78 28 |.Matrix:|:Matrix(|
|00000d60| 69 6e 74 20 72 2c 20 69 | 6e 74 20 63 29 0a 7b 0a |int r, i|nt c).{.|
|00000d70| 09 69 66 20 28 72 20 3c | 3d 20 30 20 7c 7c 20 63 |.if (r <|= 0 || c|
|00000d80| 20 3c 3d 20 30 29 0a 09 | 09 6d 61 74 72 69 78 5f | <= 0)..|.matrix_|
|00000d90| 68 61 6e 64 6c 65 72 28 | 22 6e 75 6d 62 65 72 20 |handler(|"number |
|00000da0| 6f 66 20 6d 61 74 72 69 | 78 20 72 6f 77 73 20 26 |of matri|x rows &|
|00000db0| 20 63 6f 6c 75 6d 6e 73 | 20 6d 75 73 74 20 62 65 | columns| must be|
|00000dc0| 20 67 72 65 61 74 65 72 | 20 74 68 61 6e 20 30 21 | greater| than 0!|
|00000dd0| 22 29 3b 0a 0a 09 72 6f | 77 73 20 3d 20 72 3b 20 |");...ro|ws = r; |
|00000de0| 63 6f 6c 73 20 3d 20 63 | 3b 0a 0a 09 49 6e 69 74 |cols = c|;...Init|
|00000df0| 28 29 3b 0a 7d 3b 0a 0a | 2f 2f 20 63 6f 70 79 20 |();.};..|// copy |
|00000e00| 63 6f 6e 73 74 72 75 63 | 74 6f 72 20 28 69 6e 69 |construc|tor (ini|
|00000e10| 74 69 61 6c 69 73 61 74 | 69 6f 6e 29 0a 2f 2f 20 |tialisat|ion).// |
|00000e20| 45 78 61 6d 70 6c 65 3a | 20 4d 61 74 72 69 78 20 |Example:| Matrix |
|00000e30| 41 20 3d 20 42 3b 0a 4d | 61 74 72 69 78 3a 3a 4d |A = B;.M|atrix::M|
|00000e40| 61 74 72 69 78 28 63 6f | 6e 73 74 20 4d 61 74 72 |atrix(co|nst Matr|
|00000e50| 69 78 20 26 66 72 6f 6d | 29 0a 7b 0a 20 20 20 20 |ix &from|).{. |
|00000e60| 2f 2f 20 43 6f 70 79 20 | 74 6f 20 73 65 6c 66 3f |// Copy |to self?|
|00000e70| 0a 09 69 66 20 28 74 68 | 69 73 20 21 3d 20 26 66 |..if (th|is != &f|
|00000e80| 72 6f 6d 29 0a 09 7b 0a | 09 09 41 73 73 69 67 6e |rom)..{.|..Assign|
|00000e90| 28 66 72 6f 6d 29 3b 0a | 09 7d 0a 7d 0a 0a 2f 2f |(from);.|.}.}..//|
|00000ea0| 20 41 73 73 69 67 6e 6d | 65 6e 74 0a 2f 2f 20 45 | Assignm|ent.// E|
|00000eb0| 78 61 6d 70 6c 65 3a 20 | 41 20 3d 20 42 3b 0a 76 |xample: |A = B;.v|
|00000ec0| 6f 69 64 20 4d 61 74 72 | 69 78 3a 3a 6f 70 65 72 |oid Matr|ix::oper|
|00000ed0| 61 74 6f 72 3d 28 63 6f | 6e 73 74 20 4d 61 74 72 |ator=(co|nst Matr|
|00000ee0| 69 78 20 26 66 72 6f 6d | 29 0a 7b 0a 09 2f 2f 20 |ix &from|).{..// |
|00000ef0| 64 6f 6e 27 74 20 63 6f | 70 79 20 74 6f 20 73 65 |don't co|py to se|
|00000f00| 6c 66 0a 09 69 66 20 28 | 74 68 69 73 20 21 3d 20 |lf..if (|this != |
|00000f10| 26 66 72 6f 6d 29 0a 09 | 7b 0a 09 09 44 65 6c 65 |&from)..|{...Dele|
|00000f20| 74 65 28 29 3b 0a 09 09 | 41 73 73 69 67 6e 28 66 |te();...|Assign(f|
|00000f30| 72 6f 6d 29 3b 0a 09 7d | 0a 7d 0a 0a 4d 61 74 72 |rom);..}|.}..Matr|
|00000f40| 69 78 3a 3a 7e 4d 61 74 | 72 69 78 28 29 0a 7b 0a |ix::~Mat|rix().{.|
|00000f50| 09 44 65 6c 65 74 65 28 | 29 3b 0a 7d 3b 0a 0a 76 |.Delete(|);.};..v|
|00000f60| 6f 69 64 20 4d 61 74 72 | 69 78 3a 3a 49 6e 69 74 |oid Matr|ix::Init|
|00000f70| 28 29 0a 7b 0a 09 6d 61 | 74 72 69 78 20 3d 20 6e |().{..ma|trix = n|
|00000f80| 65 77 20 28 64 6f 75 62 | 6c 65 28 2a 5b 72 6f 77 |ew (doub|le(*[row|
|00000f90| 73 5d 29 29 3b 0a 0a 09 | 2f 2f 20 61 6c 6c 6f 63 |s]));...|// alloc|
|00000fa0| 20 72 6f 77 73 0a 09 66 | 6f 72 20 28 69 6e 74 20 | rows..f|or (int |
|00000fb0| 72 20 3d 20 30 3b 20 72 | 20 3c 20 72 6f 77 73 3b |r = 0; r| < rows;|
|00000fc0| 20 72 2b 2b 29 0a 09 7b | 0a 09 09 6d 61 74 72 69 | r++)..{|...matri|
|00000fd0| 78 5b 72 5d 20 3d 20 6e | 65 77 20 28 64 6f 75 62 |x[r] = n|ew (doub|
|00000fe0| 6c 65 5b 63 6f 6c 73 5d | 29 3b 0a 0a 09 09 2f 2f |le[cols]|);....//|
|00000ff0| 20 63 6c 65 61 72 20 6d | 61 74 72 69 78 20 65 6c | clear m|atrix el|
|00001000| 65 6d 65 6e 74 73 0a 09 | 09 66 6f 72 20 28 69 6e |ements..|.for (in|
|00001010| 74 20 63 20 3d 20 30 3b | 20 63 20 3c 20 63 6f 6c |t c = 0;| c < col|
|00001020| 73 3b 20 63 2b 2b 29 0a | 09 09 09 6d 61 74 72 69 |s; c++).|...matri|
|00001030| 78 5b 72 5d 5b 63 5d 20 | 3d 20 30 3b 0a 09 7d 0a |x[r][c] |= 0;..}.|
|00001040| 7d 0a 0a 76 6f 69 64 20 | 4d 61 74 72 69 78 3a 3a |}..void |Matrix::|
|00001050| 44 65 6c 65 74 65 28 29 | 0a 7b 0a 09 69 66 20 28 |Delete()|.{..if (|
|00001060| 6d 61 74 72 69 78 29 0a | 09 7b 0a 09 09 66 6f 72 |matrix).|.{...for|
|00001070| 20 28 69 6e 74 20 72 20 | 3d 20 30 3b 20 72 20 3c | (int r |= 0; r <|
|00001080| 20 72 6f 77 73 3b 20 72 | 2b 2b 29 0a 09 09 09 64 | rows; r|++)....d|
|00001090| 65 6c 65 74 65 5b 5d 20 | 6d 61 74 72 69 78 5b 72 |elete[] |matrix[r|
|000010a0| 5d 3b 0a 09 09 64 65 6c | 65 74 65 5b 5d 20 6d 61 |];...del|ete[] ma|
|000010b0| 74 72 69 78 3b 0a 0a 09 | 09 6d 61 74 72 69 78 20 |trix;...|.matrix |
|000010c0| 3d 20 4e 55 4c 4c 3b 0a | 09 7d 0a 7d 0a 0a 76 6f |= NULL;.|.}.}..vo|
|000010d0| 69 64 20 4d 61 74 72 69 | 78 3a 3a 41 73 73 69 67 |id Matri|x::Assig|
|000010e0| 6e 28 63 6f 6e 73 74 20 | 4d 61 74 72 69 78 20 26 |n(const |Matrix &|
|000010f0| 66 72 6f 6d 29 0a 7b 0a | 09 72 6f 77 73 20 3d 20 |from).{.|.rows = |
|00001100| 66 72 6f 6d 2e 52 6f 77 | 73 28 29 3b 0a 09 63 6f |from.Row|s();..co|
|00001110| 6c 73 20 3d 20 66 72 6f | 6d 2e 43 6f 6c 73 28 29 |ls = fro|m.Cols()|
|00001120| 3b 0a 0a 09 2f 2f 20 49 | 6e 69 74 20 61 73 20 65 |;...// I|nit as e|
|00001130| 6d 70 74 79 20 6f 62 6a | 65 63 74 3f 0a 09 69 66 |mpty obj|ect?..if|
|00001140| 20 28 66 72 6f 6d 2e 6d | 61 74 72 69 78 29 0a 09 | (from.m|atrix)..|
|00001150| 7b 0a 09 09 6d 61 74 72 | 69 78 20 3d 20 6e 65 77 |{...matr|ix = new|
|00001160| 20 28 64 6f 75 62 6c 65 | 28 2a 5b 72 6f 77 73 5d | (double|(*[rows]|
|00001170| 29 29 3b 0a 0a 09 09 2f | 2f 20 61 6c 6c 6f 63 20 |));..../|/ alloc |
|00001180| 26 20 61 73 73 69 67 6e | 20 72 6f 77 73 0a 09 09 |& assign| rows...|
|00001190| 66 6f 72 20 28 69 6e 74 | 20 72 20 3d 20 30 3b 20 |for (int| r = 0; |
|000011a0| 72 20 3c 20 72 6f 77 73 | 3b 20 72 2b 2b 29 0a 09 |r < rows|; r++)..|
|000011b0| 09 7b 0a 09 09 09 6d 61 | 74 72 69 78 5b 72 5d 20 |.{....ma|trix[r] |
|000011c0| 3d 20 6e 65 77 20 28 64 | 6f 75 62 6c 65 5b 63 6f |= new (d|ouble[co|
|000011d0| 6c 73 5d 29 3b 0a 0a 09 | 09 09 66 6f 72 20 28 69 |ls]);...|..for (i|
|000011e0| 6e 74 20 63 20 3d 20 30 | 3b 20 63 20 3c 20 63 6f |nt c = 0|; c < co|
|000011f0| 6c 73 3b 20 63 2b 2b 29 | 0a 09 09 09 09 6d 61 74 |ls; c++)|.....mat|
|00001200| 72 69 78 5b 72 5d 5b 63 | 5d 20 3d 20 66 72 6f 6d |rix[r][c|] = from|
|00001210| 2e 6d 61 74 72 69 78 5b | 72 5d 5b 63 5d 3b 0a 09 |.matrix[|r][c];..|
|00001220| 09 7d 0a 09 7d 0a 09 65 | 6c 73 65 0a 09 09 6d 61 |.}..}..e|lse...ma|
|00001230| 74 72 69 78 20 3d 20 4e | 55 4c 4c 3b 0a 7d 0a 0a |trix = N|ULL;.}..|
|00001240| 20 42 4d 3e 20 41 6c 73 | 6f 2c 20 6d 79 20 73 65 | BM> Als|o, my se|
|00001250| 63 6f 6e 64 20 70 72 6f | 62 6c 65 6d 20 69 73 20 |cond pro|blem is |
|00001260| 70 72 65 74 74 79 20 73 | 69 6d 70 6c 65 2e 20 20 |pretty s|imple. |
|00001270| 49 74 20 72 65 6c 61 74 | 65 73 20 74 6f 20 75 73 |It relat|es to us|
|00001280| 69 6e 67 20 76 61 72 69 | 61 62 6c 65 0a 20 42 4d |ing vari|able. BM|
|00001290| 3e 20 61 72 67 75 6d 65 | 6e 74 73 2e 20 20 49 73 |> argume|nts. Is|
|000012a0| 20 74 68 65 72 65 20 61 | 6e 79 74 68 69 6e 67 20 | there a|nything |
|000012b0| 70 65 63 75 6c 69 61 72 | 20 6f 72 20 64 69 66 66 |peculiar| or diff|
|000012c0| 65 72 65 6e 74 20 61 62 | 6f 75 74 20 56 69 73 75 |erent ab|out Visu|
|000012d0| 61 6c 20 43 2b 2b 27 73 | 0a 20 42 4d 3e 20 76 61 |al C++'s|. BM> va|
|000012e0| 72 69 61 62 6c 65 20 61 | 72 67 75 6d 65 6e 74 73 |riable a|rguments|
|000012f0| 3f 20 20 49 20 77 61 73 | 20 74 72 79 69 6e 67 20 |? I was| trying |
|00001300| 74 6f 20 69 6e 69 74 69 | 61 6c 69 7a 65 20 74 68 |to initi|alize th|
|00001310| 65 20 4d 61 74 72 69 63 | 65 73 20 62 79 20 75 73 |e Matric|es by us|
|00001320| 69 6e 67 0a 20 42 4d 3e | 20 76 61 72 69 61 62 6c |ing. BM>| variabl|
|00001330| 65 20 61 72 67 75 6d 65 | 6e 74 73 2c 20 72 61 74 |e argume|nts, rat|
|00001340| 68 65 72 20 74 68 61 6e | 20 70 61 73 73 69 6e 67 |her than| passing|
|00001350| 20 61 20 70 6f 69 6e 74 | 65 72 20 74 6f 20 61 6e | a point|er to an|
|00001360| 20 61 72 72 61 79 20 6f | 66 0a 20 42 4d 3e 20 49 | array o|f. BM> I|
|00001370| 6e 74 65 67 65 72 73 2c | 20 62 75 74 20 49 20 63 |ntegers,| but I c|
|00001380| 6f 75 6c 64 20 6e 6f 74 | 20 67 65 74 20 74 68 65 |ould not| get the|
|00001390| 20 63 6f 6e 73 74 72 75 | 63 74 6f 72 20 74 6f 20 | constru|ctor to |
|000013a0| 67 65 74 20 74 68 65 20 | 70 72 6f 70 65 72 20 6e |get the |proper n|
|000013b0| 75 6d 62 65 72 73 2e 0a | 20 42 4d 3e 20 49 20 77 |umbers..| BM> I w|
|000013c0| 61 73 20 62 61 73 69 6e | 67 20 74 68 65 20 63 6f |as basin|g the co|
|000013d0| 64 65 20 45 58 41 43 54 | 4c 59 20 6c 69 6b 65 20 |de EXACT|LY like |
|000013e0| 77 68 61 74 20 77 61 73 | 20 69 6e 20 6d 79 20 43 |what was| in my C|
|000013f0| 2b 2b 20 66 6f 72 20 50 | 61 73 63 61 6c 0a 20 42 |++ for P|ascal. B|
|00001400| 4d 3e 20 50 72 6f 67 72 | 61 6d 6d 65 72 73 20 62 |M> Progr|ammers b|
|00001410| 6f 6f 6b 2c 20 20 6e 65 | 61 72 6c 79 20 73 74 61 |ook, ne|arly sta|
|00001420| 74 65 6d 65 6e 74 20 62 | 79 20 73 74 61 74 65 6d |tement b|y statem|
|00001430| 65 6e 74 2c 20 62 75 74 | 20 69 74 20 64 69 64 6e |ent, but| it didn|
|00001440| 27 74 20 77 6f 72 6b 2e | 20 0a 20 42 4d 3e 20 56 |'t work.| . BM> V|
|00001450| 69 73 75 61 6c 20 43 2b | 2b 20 61 63 63 65 70 74 |isual C+|+ accept|
|00001460| 65 64 20 74 68 65 20 73 | 79 6e 74 61 78 2c 20 61 |ed the s|yntax, a|
|00001470| 6e 64 20 65 76 65 72 79 | 74 68 69 6e 67 20 6c 6f |nd every|thing lo|
|00001480| 6f 6b 65 64 20 6f 6b 2c | 20 62 75 74 20 49 20 77 |oked ok,| but I w|
|00001490| 61 73 20 6a 75 73 74 0a | 20 42 4d 3e 20 6e 6f 74 |as just.| BM> not|
|000014a0| 20 67 65 74 74 69 6e 67 | 20 74 68 65 20 72 69 67 | getting| the rig|
|000014b0| 68 74 20 76 61 6c 75 65 | 73 2e 0a 0a 20 42 4d 3e |ht value|s... BM>|
|000014c0| 20 48 65 72 65 20 69 73 | 20 74 68 65 20 43 50 50 | Here is| the CPP|
|000014d0| 20 66 69 6c 65 2e 20 20 | 49 74 27 73 20 6f 6e 65 | file. |It's one|
|000014e0| 20 66 69 6c 65 20 61 6e | 64 20 63 61 6e 20 62 65 | file an|d can be|
|000014f0| 20 63 6f 70 69 65 64 2e | 20 20 49 20 65 76 65 6e | copied.| I even|
|00001500| 0a 20 42 4d 3e 20 63 6f | 6d 6d 65 6e 74 65 64 20 |. BM> co|mmented |
|00001510| 6f 75 74 20 74 68 69 73 | 20 74 65 78 74 20 73 6f |out this| text so|
|00001520| 20 79 6f 75 20 63 61 6e | 20 6a 75 73 74 20 73 61 | you can| just sa|
|00001530| 76 65 20 74 68 65 20 6d | 65 73 73 61 67 65 20 74 |ve the m|essage t|
|00001540| 6f 20 61 20 66 69 6c 65 | 20 61 6e 64 0a 20 42 4d |o a file| and. BM|
|00001550| 3e 20 63 6f 70 79 20 69 | 74 20 64 69 72 65 63 74 |> copy i|t direct|
|00001560| 6c 79 20 69 66 20 79 6f | 75 20 77 6f 75 6c 64 20 |ly if yo|u would |
|00001570| 6c 69 6b 65 20 74 6f 20 | 74 61 6b 65 20 61 20 6c |like to |take a l|
|00001580| 6f 6f 6b 20 61 74 20 20 | 69 74 2e 0a 0a 20 42 4d |ook at |it... BM|
|00001590| 3e 20 41 6e 79 20 68 65 | 6c 70 20 77 6f 75 6c 64 |> Any he|lp would|
|000015a0| 20 62 65 20 47 52 45 41 | 54 4c 59 20 61 70 70 72 | be GREA|TLY appr|
|000015b0| 65 63 69 61 74 65 64 21 | 0a 0a 46 69 72 73 74 20 |eciated!|..First |
|000015c0| 20 6f 66 20 20 61 6c 6c | 2c 20 79 6f 75 20 73 68 | of all|, you sh|
|000015d0| 6f 75 6c 64 20 75 73 65 | 20 66 6c 6f 61 74 20 6f |ould use| float o|
|000015e0| 72 20 64 6f 75 62 6c 65 | 20 76 61 72 73 20 66 6f |r double| vars fo|
|000015f0| 72 20 61 20 6d 61 74 72 | 69 78 20 28 77 68 61 74 |r a matr|ix (what|
|00001600| 0a 61 62 6f 75 74 20 20 | 73 70 6c 69 74 20 20 6e |.about |split n|
|00001610| 75 6d 62 65 72 73 3f 21 | 29 2e 20 20 20 54 68 69 |umbers?!|). Thi|
|00001620| 73 20 20 70 65 61 63 65 | 20 20 6f 66 20 20 63 6f |s peace| of co|
|00001630| 64 65 20 20 61 6c 73 6f | 20 20 74 68 69 6e 6b 73 |de also| thinks|
|00001640| 20 20 61 62 6f 75 74 0a | 75 6e 64 65 66 69 6e 65 | about.|undefine|
|00001650| 64 20 6d 61 74 72 69 63 | 65 73 2e 2e 2e 20 20 76 |d matric|es... v|
|00001660| 65 72 79 20 69 6d 70 6f | 72 74 61 6e 74 2c 20 69 |ery impo|rtant, i|
|00001670| 66 20 79 6f 75 20 64 6f | 6e 27 74 20 77 61 6e 74 |f you do|n't want|
|00001680| 20 74 6f 20 63 72 61 73 | 68 20 79 6f 75 72 0a 6d | to cras|h your.m|
|00001690| 61 63 68 69 6e 65 21 20 | 20 41 6e 64 20 77 68 61 |achine! | And wha|
|000016a0| 74 20 61 62 6f 75 74 20 | 74 68 65 20 69 6e 63 6f |t about |the inco|
|000016b0| 6d 70 61 74 69 62 6c 79 | 20 73 69 7a 65 64 20 61 |mpatibly| sized a|
|000016c0| 72 72 61 79 73 3f 0a 0a | 48 65 72 65 27 73 20 61 |rrays?..|Here's a|
|000016d0| 20 70 69 65 63 65 20 6f | 66 20 63 6f 64 65 20 66 | piece o|f code f|
|000016e0| 6f 72 20 76 61 72 69 61 | 62 6c 65 20 61 72 67 75 |or varia|ble argu|
|000016f0| 6d 65 6e 74 73 3a 0a 0a | 23 69 6e 63 6c 75 64 65 |ments:..|#include|
|00001700| 20 3c 73 74 64 69 6f 2e | 68 3e 0a 23 69 6e 63 6c | <stdio.|h>.#incl|
|00001710| 75 64 65 20 3c 73 74 64 | 61 72 67 2e 68 3e 0a 0a |ude <std|arg.h>..|
|00001720| 76 6f 69 64 20 45 72 72 | 6f 72 28 63 6f 6e 73 74 |void Err|or(const|
|00001730| 20 63 68 61 72 20 2a 66 | 6d 74 2c 20 2e 2e 2e 29 | char *f|mt, ...)|
|00001740| 0a 7b 0a 09 63 68 61 72 | 20 62 75 66 5b 32 35 36 |.{..char| buf[256|
|00001750| 5d 3b 0a 09 76 61 5f 6c | 69 73 74 20 61 72 67 73 |];..va_l|ist args|
|00001760| 3b 0a 0a 09 76 61 5f 73 | 74 61 72 74 28 61 72 67 |;...va_s|tart(arg|
|00001770| 73 2c 20 66 6d 74 29 3b | 0a 09 76 73 70 72 69 6e |s, fmt);|..vsprin|
|00001780| 74 66 28 62 75 66 2c 20 | 66 6d 74 2c 20 61 72 67 |tf(buf, |fmt, arg|
|00001790| 73 29 3b 0a 09 76 61 5f | 65 6e 64 28 61 72 67 73 |s);..va_|end(args|
|000017a0| 29 3b 0a 0a 09 70 72 69 | 6e 74 66 28 22 5c 6e 2a |);...pri|ntf("\n*|
|000017b0| 2a 2a 20 45 72 72 6f 72 | 3a 20 25 73 5c 6e 22 2c |** Error|: %s\n",|
|000017c0| 20 62 75 66 29 3b 0a 09 | 65 78 69 74 28 31 29 3b | buf);..|exit(1);|
|000017d0| 0a 7d 0a 0a 2f 2f 20 61 | 6e 20 65 78 69 74 20 66 |.}..// a|n exit f|
|000017e0| 75 6e 63 74 69 6f 6e 20 | 79 6f 75 20 77 69 73 68 |unction |you wish|
|000017f0| 20 74 6f 20 75 73 65 3b | 20 66 6f 72 20 65 78 61 | to use;| for exa|
|00001800| 6d 70 6c 65 20 45 72 72 | 6f 72 28 29 20 28 73 65 |mple Err|or() (se|
|00001810| 65 20 61 62 6f 76 65 29 | 0a 65 78 74 65 72 6e 20 |e above)|.extern |
|00001820| 76 6f 69 64 20 28 2a 6d | 61 74 72 69 78 5f 68 61 |void (*m|atrix_ha|
|00001830| 6e 64 6c 65 72 29 28 63 | 6f 6e 73 74 20 63 68 61 |ndler)(c|onst cha|
|00001840| 72 20 2a 66 6d 74 2c 20 | 2e 2e 2e 29 3b 0a 0a 23 |r *fmt, |...);..#|
|00001850| 64 65 66 69 6e 65 20 4d | 41 54 52 49 58 5f 55 4e |define M|ATRIX_UN|
|00001860| 44 45 46 49 4e 45 44 20 | 20 20 6d 61 74 72 69 78 |DEFINED | matrix|
|00001870| 5f 68 61 6e 64 6c 65 72 | 28 22 75 6e 64 65 66 69 |_handler|("undefi|
|00001880| 6e 65 64 20 6d 61 74 72 | 69 78 22 29 3b 0a 0a 23 |ned matr|ix");..#|
|00001890| 64 65 66 69 6e 65 20 45 | 52 52 5f 49 4e 43 4f 4d |define E|RR_INCOM|
|000018a0| 50 41 54 5f 4d 41 54 20 | 20 20 22 69 6e 63 6f 6d |PAT_MAT | "incom|
|000018b0| 70 61 74 69 62 6c 65 20 | 6d 61 74 72 69 63 65 73 |patible |matrices|
|000018c0| 20 66 6f 72 20 6f 70 65 | 72 61 74 6f 72 20 27 25 | for ope|rator '%|
|000018d0| 63 27 22 0a 0a 4d 61 74 | 72 69 78 20 6f 70 65 72 |c'"..Mat|rix oper|
|000018e0| 61 74 6f 72 2b 28 63 6f | 6e 73 74 20 4d 61 74 72 |ator+(co|nst Matr|
|000018f0| 69 78 20 26 41 2c 20 63 | 6f 6e 73 74 20 4d 61 74 |ix &A, c|onst Mat|
|00001900| 72 69 78 20 26 42 29 0a | 7b 0a 09 69 66 20 28 21 |rix &B).|{..if (!|
|00001910| 41 2e 6d 61 74 72 69 78 | 20 7c 7c 20 21 42 2e 6d |A.matrix| || !B.m|
|00001920| 61 74 72 69 78 29 20 4d | 41 54 52 49 58 5f 55 4e |atrix) M|ATRIX_UN|
|00001930| 44 45 46 49 4e 45 44 3b | 0a 0a 09 69 66 20 28 41 |DEFINED;|...if (A|
|00001940| 2e 52 6f 77 73 28 29 20 | 21 3d 20 42 2e 52 6f 77 |.Rows() |!= B.Row|
|00001950| 73 28 29 20 7c 7c 20 41 | 2e 43 6f 6c 73 28 29 20 |s() || A|.Cols() |
|00001960| 21 3d 20 42 2e 43 6f 6c | 73 28 29 29 0a 09 09 6d |!= B.Col|s())...m|
|00001970| 61 74 72 69 78 5f 68 61 | 6e 64 6c 65 72 28 45 52 |atrix_ha|ndler(ER|
|00001980| 52 5f 49 4e 43 4f 4d 50 | 41 54 5f 4d 41 54 2c 20 |R_INCOMP|AT_MAT, |
|00001990| 27 2b 27 29 3b 0a 0a 09 | 4d 61 74 72 69 78 20 43 |'+');...|Matrix C|
|000019a0| 28 41 2e 52 6f 77 73 28 | 29 2c 20 41 2e 43 6f 6c |(A.Rows(|), A.Col|
|000019b0| 73 28 29 29 3b 0a 0a 09 | 66 6f 72 20 28 69 6e 74 |s());...|for (int|
|000019c0| 20 72 6f 77 20 3d 20 30 | 3b 20 72 6f 77 20 3c 20 | row = 0|; row < |
|000019d0| 41 2e 52 6f 77 73 28 29 | 3b 20 72 6f 77 2b 2b 29 |A.Rows()|; row++)|
|000019e0| 0a 09 09 66 6f 72 20 28 | 69 6e 74 20 63 6f 6c 20 |...for (|int col |
|000019f0| 3d 20 30 3b 20 63 6f 6c | 20 3c 20 42 2e 43 6f 6c |= 0; col| < B.Col|
|00001a00| 73 28 29 3b 20 63 6f 6c | 2b 2b 29 0a 09 09 09 43 |s(); col|++)....C|
|00001a10| 2e 6d 61 74 72 69 78 5b | 72 6f 77 5d 5b 63 6f 6c |.matrix[|row][col|
|00001a20| 5d 20 3d 20 41 2e 6d 61 | 74 72 69 78 5b 72 6f 77 |] = A.ma|trix[row|
|00001a30| 5d 5b 63 6f 6c 5d 20 2b | 20 42 2e 6d 61 74 72 69 |][col] +| B.matri|
|00001a40| 78 5b 72 6f 77 5d 5b 63 | 6f 6c 5d 3b 0a 0a 09 72 |x[row][c|ol];...r|
|00001a50| 65 74 75 72 6e 20 43 3b | 0a 7d 0a 0a 4d 61 74 72 |eturn C;|.}..Matr|
|00001a60| 69 78 20 6f 70 65 72 61 | 74 6f 72 2f 28 63 6f 6e |ix opera|tor/(con|
|00001a70| 73 74 20 4d 61 74 72 69 | 78 20 26 41 2c 20 63 6f |st Matri|x &A, co|
|00001a80| 6e 73 74 20 4d 61 74 72 | 69 78 20 26 42 29 0a 7b |nst Matr|ix &B).{|
|00001a90| 0a 09 69 66 20 28 21 41 | 2e 6d 61 74 72 69 78 20 |..if (!A|.matrix |
|00001aa0| 7c 7c 20 21 42 2e 6d 61 | 74 72 69 78 29 20 4d 41 ||| !B.ma|trix) MA|
|00001ab0| 54 52 49 58 5f 55 4e 44 | 45 46 49 4e 45 44 3b 0a |TRIX_UND|EFINED;.|
|00001ac0| 0a 09 72 65 74 75 72 6e | 20 28 41 20 2a 20 49 6e |..return| (A * In|
|00001ad0| 76 65 72 74 28 42 29 29 | 3b 0a 7d 0a 0a 4d 61 74 |vert(B))|;.}..Mat|
|00001ae0| 72 69 78 20 6f 70 65 72 | 61 74 6f 72 2f 28 63 6f |rix oper|ator/(co|
|00001af0| 6e 73 74 20 4d 61 74 72 | 69 78 20 26 41 2c 20 63 |nst Matr|ix &A, c|
|00001b00| 6f 6e 73 74 20 64 6f 75 | 62 6c 65 20 6e 29 0a 7b |onst dou|ble n).{|
|00001b10| 0a 09 69 66 20 28 21 41 | 2e 6d 61 74 72 69 78 29 |..if (!A|.matrix)|
|00001b20| 20 4d 41 54 52 49 58 5f | 55 4e 44 45 46 49 4e 45 | MATRIX_|UNDEFINE|
|00001b30| 44 3b 0a 0a 09 64 6f 75 | 62 6c 65 20 66 61 63 74 |D;...dou|ble fact|
|00001b40| 6f 72 20 3d 20 31 2f 6e | 3b 0a 0a 09 72 65 74 75 |or = 1/n|;...retu|
|00001b50| 72 6e 20 28 41 20 2a 20 | 66 61 63 74 6f 72 29 3b |rn (A * |factor);|
|00001b60| 0a 7d 0a 0a 4d 61 74 72 | 69 78 20 6f 70 65 72 61 |.}..Matr|ix opera|
|00001b70| 74 6f 72 2f 28 63 6f 6e | 73 74 20 64 6f 75 62 6c |tor/(con|st doubl|
|00001b80| 65 20 6e 2c 20 63 6f 6e | 73 74 20 4d 61 74 72 69 |e n, con|st Matri|
|00001b90| 78 20 26 41 29 0a 7b 0a | 09 69 66 20 28 21 41 2e |x &A).{.|.if (!A.|
|00001ba0| 6d 61 74 72 69 78 29 20 | 4d 41 54 52 49 58 5f 55 |matrix) |MATRIX_U|
|00001bb0| 4e 44 45 46 49 4e 45 44 | 3b 0a 0a 09 72 65 74 75 |NDEFINED|;...retu|
|00001bc0| 72 6e 20 28 6e 20 2a 20 | 49 6e 76 65 72 74 28 41 |rn (n * |Invert(A|
|00001bd0| 29 29 3b 0a 7d 0a 0a 4d | 61 74 72 69 78 20 6f 70 |));.}..M|atrix op|
|00001be0| 65 72 61 74 6f 72 2a 28 | 63 6f 6e 73 74 20 4d 61 |erator*(|const Ma|
|00001bf0| 74 72 69 78 20 26 41 2c | 20 63 6f 6e 73 74 20 4d |trix &A,| const M|
|00001c00| 61 74 72 69 78 20 26 42 | 29 0a 7b 0a 09 69 66 20 |atrix &B|).{..if |
|00001c10| 28 21 41 2e 6d 61 74 72 | 69 78 20 7c 7c 20 21 42 |(!A.matr|ix || !B|
|00001c20| 2e 6d 61 74 72 69 78 29 | 20 4d 41 54 52 49 58 5f |.matrix)| MATRIX_|
|00001c30| 55 4e 44 45 46 49 4e 45 | 44 3b 0a 0a 09 69 66 20 |UNDEFINE|D;...if |
|00001c40| 28 41 2e 43 6f 6c 73 28 | 29 20 21 3d 20 42 2e 52 |(A.Cols(|) != B.R|
|00001c50| 6f 77 73 28 29 29 0a 09 | 09 6d 61 74 72 69 78 5f |ows())..|.matrix_|
|00001c60| 68 61 6e 64 6c 65 72 28 | 45 52 52 5f 49 4e 43 4f |handler(|ERR_INCO|
|00001c70| 4d 50 41 54 5f 4d 41 54 | 2c 20 27 2a 27 29 3b 0a |MPAT_MAT|, '*');.|
|00001c80| 0a 09 4d 61 74 72 69 78 | 20 43 28 41 2e 52 6f 77 |..Matrix| C(A.Row|
|00001c90| 73 28 29 2c 20 42 2e 43 | 6f 6c 73 28 29 29 3b 0a |s(), B.C|ols());.|
|00001ca0| 0a 09 69 6e 74 20 72 6f | 77 5f 61 2c 20 63 6f 6c |..int ro|w_a, col|
|00001cb0| 5f 61 3b 0a 09 69 6e 74 | 20 72 6f 77 5f 62 2c 20 |_a;..int| row_b, |
|00001cc0| 63 6f 6c 5f 62 3b 0a 09 | 69 6e 74 20 72 6f 77 5f |col_b;..|int row_|
|00001cd0| 63 2c 20 63 6f 6c 5f 63 | 3b 0a 0a 09 66 6f 72 20 |c, col_c|;...for |
|00001ce0| 28 63 6f 6c 5f 62 20 3d | 20 30 2c 20 63 6f 6c 5f |(col_b =| 0, col_|
|00001cf0| 63 20 3d 20 30 3b 20 63 | 6f 6c 5f 62 20 3c 20 42 |c = 0; c|ol_b < B|
|00001d00| 2e 43 6f 6c 73 28 29 3b | 20 63 6f 6c 5f 62 2b 2b |.Cols();| col_b++|
|00001d10| 2c 20 63 6f 6c 5f 63 2b | 2b 29 0a 09 7b 0a 09 09 |, col_c+|+)..{...|
|00001d20| 66 6f 72 20 28 72 6f 77 | 5f 61 20 3d 20 30 2c 20 |for (row|_a = 0, |
|00001d30| 72 6f 77 5f 63 20 3d 20 | 30 3b 20 72 6f 77 5f 61 |row_c = |0; row_a|
|00001d40| 20 3c 20 41 2e 52 6f 77 | 73 28 29 3b 20 72 6f 77 | < A.Row|s(); row|
|00001d50| 5f 61 2b 2b 2c 20 72 6f | 77 5f 63 2b 2b 29 0a 09 |_a++, ro|w_c++)..|
|00001d60| 09 7b 0a 09 09 09 66 6f | 72 20 28 63 6f 6c 5f 61 |.{....fo|r (col_a|
|00001d70| 20 3d 20 30 2c 20 72 6f | 77 5f 62 20 3d 20 30 3b | = 0, ro|w_b = 0;|
|00001d80| 20 63 6f 6c 5f 61 20 3c | 20 41 2e 43 6f 6c 73 28 | col_a <| A.Cols(|
|00001d90| 29 3b 20 72 6f 77 5f 62 | 2b 2b 2c 20 63 6f 6c 5f |); row_b|++, col_|
|00001da0| 61 2b 2b 29 0a 09 09 09 | 7b 0a 09 09 09 09 43 2e |a++)....|{.....C.|
|00001db0| 6d 61 74 72 69 78 5b 72 | 6f 77 5f 63 5d 5b 63 6f |matrix[r|ow_c][co|
|00001dc0| 6c 5f 63 5d 20 2b 3d 20 | 41 2e 6d 61 74 72 69 78 |l_c] += |A.matrix|
|00001dd0| 5b 72 6f 77 5f 61 5d 5b | 63 6f 6c 5f 61 5d 20 2a |[row_a][|col_a] *|
|00001de0| 20 42 2e 6d 61 74 72 69 | 78 5b 72 6f 77 5f 62 5d | B.matri|x[row_b]|
|00001df0| 5b 63 6f 6c 5f 62 5d 3b | 0a 09 09 09 7d 0a 09 09 |[col_b];|....}...|
|00001e00| 7d 0a 09 7d 0a 09 72 65 | 74 75 72 6e 20 43 3b 0a |}..}..re|turn C;.|
|00001e10| 7d 0a 0a 4d 61 74 72 69 | 78 20 6f 70 65 72 61 74 |}..Matri|x operat|
|00001e20| 6f 72 2a 28 63 6f 6e 73 | 74 20 64 6f 75 62 6c 65 |or*(cons|t double|
|00001e30| 20 6e 2c 20 63 6f 6e 73 | 74 20 4d 61 74 72 69 78 | n, cons|t Matrix|
|00001e40| 20 26 41 29 0a 7b 0a 09 | 69 66 20 28 21 41 2e 6d | &A).{..|if (!A.m|
|00001e50| 61 74 72 69 78 29 20 4d | 41 54 52 49 58 5f 55 4e |atrix) M|ATRIX_UN|
|00001e60| 44 45 46 49 4e 45 44 3b | 0a 0a 09 4d 61 74 72 69 |DEFINED;|...Matri|
|00001e70| 78 20 42 28 41 2e 52 6f | 77 73 28 29 2c 20 41 2e |x B(A.Ro|ws(), A.|
|00001e80| 43 6f 6c 73 28 29 29 3b | 0a 0a 09 66 6f 72 20 28 |Cols());|...for (|
|00001e90| 69 6e 74 20 72 20 3d 20 | 30 3b 20 72 20 3c 20 41 |int r = |0; r < A|
|00001ea0| 2e 52 6f 77 73 28 29 3b | 20 72 2b 2b 29 0a 09 09 |.Rows();| r++)...|
|00001eb0| 66 6f 72 20 28 69 6e 74 | 20 63 20 3d 20 30 3b 20 |for (int| c = 0; |
|00001ec0| 63 20 3c 20 41 2e 43 6f | 6c 73 28 29 3b 20 63 2b |c < A.Co|ls(); c+|
|00001ed0| 2b 29 0a 09 09 09 42 2e | 6d 61 74 72 69 78 5b 72 |+)....B.|matrix[r|
|00001ee0| 5d 5b 63 5d 20 3d 20 41 | 2e 6d 61 74 72 69 78 5b |][c] = A|.matrix[|
|00001ef0| 72 5d 5b 63 5d 20 2a 20 | 6e 3b 0a 0a 09 72 65 74 |r][c] * |n;...ret|
|00001f00| 75 72 6e 20 42 3b 0a 7d | 0a 0a 4d 61 74 72 69 78 |urn B;.}|..Matrix|
|00001f10| 20 6f 70 65 72 61 74 6f | 72 2a 28 63 6f 6e 73 74 | operato|r*(const|
|00001f20| 20 4d 61 74 72 69 78 20 | 26 41 2c 20 63 6f 6e 73 | Matrix |&A, cons|
|00001f30| 74 20 64 6f 75 62 6c 65 | 20 6e 29 0a 7b 0a 09 69 |t double| n).{..i|
|00001f40| 66 20 28 21 41 2e 6d 61 | 74 72 69 78 29 20 4d 41 |f (!A.ma|trix) MA|
|00001f50| 54 52 49 58 5f 55 4e 44 | 45 46 49 4e 45 44 3b 0a |TRIX_UND|EFINED;.|
|00001f60| 0a 09 72 65 74 75 72 6e | 20 28 6e 20 2a 20 41 29 |..return| (n * A)|
|00001f70| 3b 0a 7d 0a 0a 47 72 74 | 7a 2c 20 20 20 20 20 20 |;.}..Grt|z, |
|00001f80| 20 20 20 20 20 20 20 20 | 5f 5f 0a 20 20 20 20 20 | |__. |
|00001f90| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 2f 2f 2f | | ///|
|00001fa0| 0a 20 20 20 20 5f 20 20 | 20 5f 5f 20 20 20 20 5f |. _ | __ _|
|00001fb0| 20 20 2f 2f 2f 20 20 72 | 6f 65 6c 6f 66 40 74 72 | /// r|oelof@tr|
|00001fc0| 61 6e 73 2e 78 73 34 61 | 6c 6c 2e 6e 6c 0a 20 20 |ans.xs4a|ll.nl. |
|00001fd0| 20 7c 5f 29 20 20 5c 5c | 5c 20 20 20 7c 20 2f 2f | |_) \\|\ | //|
|00001fe0| 2f 0a 20 20 20 7c 20 5c | 6f 65 6c 6f 66 20 28 5f |/. | \|oelof (_|
|00001ff0| 7c 61 6e 73 65 6e 20 20 | 53 79 73 4f 70 20 27 45 ||ansen |SysOp 'E|
|00002000| 78 70 6c 6f 72 65 72 20 | 42 42 53 27 20 61 6b 61 |xplorer |BBS' aka|
|00002010| 20 27 45 78 70 6c 6f 72 | 65 72 20 44 65 76 65 6c | 'Explor|er Devel|
|00002020| 6f 70 6d 65 6e 74 27 0a | 20 20 20 20 20 20 20 20 |opment'.| |
|00002030| 20 20 5c 5c 5c 20 2f 2f | 2f 0a 20 20 20 20 20 20 | \\\ //|/. |
|00002040| 20 20 20 20 20 5c 5c 58 | 2f 2f 20 20 20 20 20 20 | \\X|// |
|00002050| 20 32 3a 32 38 36 2f 34 | 30 35 2e 30 40 66 69 64 | 2:286/4|05.0@fid|
|00002060| 6f 6e 65 74 20 33 39 3a | 31 35 33 2f 32 30 32 2e |onet 39:|153/202.|
|00002070| 30 40 61 6d 69 67 61 6e | 65 74 0a 20 20 20 20 20 |0@amigan|et. |
|00002080| 20 20 20 20 20 20 20 5c | 58 2f 20 20 20 20 20 20 | \|X/ |
|00002090| 20 31 34 3a 31 30 31 2f | 32 30 37 2e 30 40 6e 6c | 14:101/|207.0@nl|
|000020a0| 61 6e 65 74 20 20 36 39 | 3a 31 30 30 2f 31 30 30 |anet 69|:100/100|
|000020b0| 2e 30 40 6c 64 79 6e 65 | 74 20 28 4c 44 59 20 4e |.0@ldyne|t (LDY N|
|000020c0| 43 29 0a 0a | |C).. | |
+--------+-------------------------+-------------------------+--------+--------+